package ar.edu.utn.frba.disenio.model.tests;

import java.util.ArrayList;
import java.util.List;

import ar.edu.utn.frba.disenio.model.*;

import com.lanchita.excepciones.CodigoErroneoException;
import com.lanchita.excepciones.EstadoErroneoException;

public class AerolineaMOCK extends Aerolinea {

		public String[][] getAsientos() {
			String[][] asientos = {
					{ "01202022220202-3", "159.90", "P", "V", "D", "" },
					{ "01202022220123-3", "205.10", "E", "P", "D", "" },
					{ "01202012315523-8", "154.08", "E", "P", "D", "" },
					{ "01202022267867-7", "255.98", "E", "P", "D", "" },
					{ "01202022227897-3", "236.10", "P", "C", "D", "" },
					{ "01202022998988-6", "148.23", "P", "V", "D", "" },
					{ "01202022220008-3", "383.22", "T", "V", "D", "" },
					{ "01202022256565-3", "282.19", "T", "C", "D", "" },
					{ "01202022323423-5", "431.28", "T", "C", "D", "" },
					{ "01202022220298-2", "528.81", "P", "V", "D", "" } };
			return asientos;
		}
		
		@Override
		public List<Asiento> asientosDisponiblesDeAerolineaPara(Busqueda unaBusqueda) {

			List<Asiento> asientosDisponiblesDeLanchita = new ArrayList<Asiento>();
			for (String[] unAsientoDisponible : this.getAsientos()){
				String codigoAsiento = unAsientoDisponible[0];
				float precio = Float.parseFloat(unAsientoDisponible[1]);
				String categoria = unAsientoDisponible[2];
				String ubicacion = unAsientoDisponible[3];
				asientosDisponiblesDeLanchita.add(Asiento.crearSegunTipoDeAsiento(codigoAsiento, precio, categoria, ubicacion, this)); 
			}
			return asientosDisponiblesDeLanchita;
		}
		
		@Override
		public void comprar(Asiento unAsiento) {
				String[] asiento = this.getAsientos()[this.getIndiceDeAsiento(unAsiento.getCodigo())];

				if (asiento[4].equals("C") || asiento[4].equals("R")) {
					throw new EstadoErroneoException();
				}

				asiento[4] = "C";
			}		

		public int getIndiceDeAsiento(String codigo) {
			for (int i = 0; i < this.getAsientos().length; i++) {
				if (this.getAsientos()[i][0].equals(codigo)) {
					return i;
				}
			}

			throw new CodigoErroneoException(codigo);
		}
		
		public int porcentajeImpuesto() {
			return 15;
		}
		
}

